// Copyright (c) 2023, hzmes and contributors
// For license information, please see license.txt

frappe.ui.form.on('SRM Reconciliation', {
	// 
	// onload: function(frm) {
	// 	if (frm.is_new()) {
	// 		frm.set_intro('请设置起始日期范围并保存', 'green');
	// 	}
	// 	// 隐藏子表单[添加行]按钮
	// 	frm.get_field('items').grid.cannot_add_rows = true
	// },

	// refresh: function(frm) {
	// 	// 隐藏[删除行]按钮
	// 	$('*[data-fieldname="items"]').find('.grid-remove-rows').hide();
	// 	// 隐藏[全部删除]按钮
	// 	$('*[data-fieldname="items"]').find('.grid-remove-all-rows').hide();
	// 	// 隐藏子表中的"上传"按钮
	// 	$(".grid-upload").hide();
	// 	// 生成对账明细
	// 	if(!frm.is_new() && frm.perm[0].write) {
	// 		frm.add_custom_button(__('Get Reconciliation Detail'), function() {		
	// 			frm.doc.items = [];
	// 			// 调用py方法
	// 			frm.call({
	// 				method: 'srm.srm.doctype.srm_server_config.srm_server_config.sync_purchaseinstock_from_erp', //路径格式
	// 				args: {
	// 					date_from: frm.doc.date_from,
	// 					date_to: frm.doc.date_to,
	// 					supplier_number: frm.doc.supplier_number
	// 				},
	// 				freeze: true,
	// 				freeze_message: __("running..."),
	// 				callback: function(r) {
	// 					let total_all_amount = 0;
	// 					r.message.forEach(i => {
	// 						// 根据类型判断加或减
	// 						if (i[0] == 'in-of-warehouse') { total_all_amount += i[9] * 1;}
	// 						if (i[0] == 'out-of-warehouse') { total_all_amount -= i[9] * 1;}
	// 						// console.log(i[0]);
	// 						let row = frm.add_child('items', {
	// 							type: i[0],
	// 							date: i[1],
	// 							order_billno: i[2],
	// 							material_number: i[3],
	// 							material_name: i[4],
	// 							material_model: i[5],
	// 							uom: i[6],
	// 							qty: i[7],
	// 							tax_price: i[8],
	// 							all_amount: i[9],
	// 							reconciliation_price: i[8],
	// 							reconciliation_all_amount: i[9],
	// 							reconciliation_dif: 0,
	// 						})
	// 					});
	// 					// console.log(total_all_amount);
	// 					frm.set_value("total_amount", total_all_amount.toFixed(2));
	// 					frm.refresh_field("items");
	// 					frm.refresh_field("total_amount");
	// 				}
	// 			})
	// 		});
	// 	}

	// 	// 行记录底色显示 2023-04-16
	// 	frm.fields_dict["items"].$wrapper.find('.grid-body .rows').find(".grid-row").each(function(i, item) { let d = locals["SRM Reconciliation Items"][$(item).attr('data-name')]; let color = d["reconciliation_dif"] != 0? 'yellow':'transparent'; $(item).find('.grid-static-col').css({'background-color': color}); });
		

	// 	// 采购专岗发票签收
	// 	if(frappe.user.has_role('SRM Purchase') && !frm.is_new() && frm.doc.docstatus == 1) {
	// 		frm.add_custom_button(__('Receive Invoice'), function() {
	// 			if (frm.doc.reconciliation_invoice_items) {
	// 				var invoice_items = [];
	// 				for ( var item of frm.doc.reconciliation_invoice_items ) { if (item.invoice_pdf_upload && item.confirm === undefined) { invoice_items.push(item.invoice_pdf_upload) } };
	// 				// console.log(invoice_items);
	// 				frappe.prompt({
	// 					label: '请选择发票行记录:',
	// 					fieldname: 'invoice',
	// 					fieldtype: 'Select',
	// 					options: invoice_items
	// 				}, (values) => {
	// 					// 把需要分配的行记录下来，set_value
	// 					var row_name = frm.doc.reconciliation_invoice_items.find(item => item.invoice_pdf_upload == values.invoice ).name
	// 					frappe.db.set_value('SRM Reconciliation Invoice Items', row_name, {confirm: '发票已签收'})
	// 					.then((r) => {frm.reload_doc();})
	// 				})
	// 			}
	// 			else {
	// 				frappe.msgprint(__('没有上传的发票行!'))
	// 			}
	// 		})
	// 	}

	// 	// 财务专岗发票审核
	// 	if(frappe.user.has_role('Accounts User') && !frm.is_new() && frm.doc.docstatus == 1) {
	// 		frm.add_custom_button(__('Check Invoice'), function() {
	// 			if (frm.doc.reconciliation_invoice_items) {
	// 				var invoice_items = [];
	// 				for ( var item of frm.doc.reconciliation_invoice_items ) { if (item.invoice_pdf_upload && item.confirm === '发票已签收') { invoice_items.push(item.invoice_pdf_upload) } };
	// 				// console.log(invoice_items);
	// 				frappe.prompt({
	// 					label: '请选择发票行记录:',
	// 					fieldname: 'invoice',
	// 					fieldtype: 'Select',
	// 					options: invoice_items
	// 				}, (values) => {
	// 					// 把需要分配的行记录下来，set_value
	// 					var row_name = frm.doc.reconciliation_invoice_items.find(item => item.invoice_pdf_upload == values.invoice ).name
	// 					frappe.db.set_value('SRM Reconciliation Invoice Items', row_name, {confirm: '发票已审核'})
	// 					.then((r) => {frm.reload_doc();})
	// 				})
	// 			}
	// 			else {
	// 				frappe.msgprint(__('没有上传的发票行!'))
	// 			}
	// 		})
	// 	}
	// },
	
	// // 本季度期初应收款余额变更时自动计算quarter_end
	// quarter_begin: function(frm) {
	// 	var total_amount = 1 * frm.doc.quarter_begin;
	// 	$.each(frm.doc.quarters, function(i, d) { total_amount = total_amount + d.sales_amount - d.amount_collected })
	// 	frm.set_value('quarter_end', total_amount.toFixed(2));
	// 	frm.refresh_field('quarter_end');
	// },

	// // 对账差异变更时自动计算quarter_end: 注意1 * 的转换, 确保不会出现NaN
	// total_reconciliation_dif: function(frm) {
	// 	var total_amount = 1 * frm.doc.quarter_begin;
	// 	total_amount += 1 * frm.doc.total_reconciliation_dif;
	// 	$.each(frm.doc.quarters, function(i, d) { total_amount = total_amount + d.sales_amount - d.amount_collected })
	// 	frm.set_value('quarter_end', total_amount.toFixed(2));
	// 	frm.refresh_field('quarter_end');
	// },

	// // 检查date_to必须大于date_from
	// date_to: function(frm) {
	// 	if(!frm.doc.date_from) {frm.set_value("date_to", undefined); frappe.msgprint("请先录入对账起始日期!")}
	// 	if(frm.doc.date_from && frm.doc.date_from >= frm.doc.date_to) {frappe.throw("对账截止日期必须大于对账起始日期!")}
	// },

	// // 复制往期的对账明细
	// copy_from_history: function(frm) {
	// 	// 找上期对账单
	// 	frm.call('get_from_history')
	// 	.then(r => {
	// 		if (r.message) {
	// 			// 温馨提示上期对账单的年份
	// 			frappe.warn('请确认将从上期对账明细复制?是否是跨年复制?',
	// 				`<div style='color: red;'>上期截止日期年份:<strong> ${r.message[0].date_to.slice(0,4)}</strong> 上期对账单号: ${r.message[0].name}</div>`,
	// 				() => {
	// 					// API获取doc
	// 					frappe.db.get_doc(frm.doctype, r.message[0].name)
	// 					.then(doc => {
	// 						// console.log(doc);//把doc的name传参到py方法中执行子表行quarters的替换(复制)
	// 						frm.call('copy_from_history', {history_name: r.message[0].name})
	// 						.then(r => {frm.set_value('quarter_begin', doc.quarter_begin)})//最后才set_value修改quarter_begin以触发JS的余额计算
	// 					})
	// 					// console.log(r.message);
	// 					// console.log(r.message[0].date_to.slice(0,4));
	// 				},
	// 				'Continue',
	// 				true // Sets dialog as minimizable
	// 			)
	// 		}
	// 	})
	// 	// frappe.db.get_doc(frm.doctype, { supplier_number: frm.doc.supplier_number })
	// 	// .then(doc => {
	// 	// 	console.log(doc)
	// 	// })
	// },

	// // 供应商角色不允许[提交]
	// before_submit: function(frm) {
	// 	if (frappe.user.has_role('SRM Supplier')) {frappe.throw("供应商用户不允许提交!")}
	// },

});

// frappe.ui.form.on('SRM Reconciliation Quarter Sub', {
// 	// refresh: function(frm) {

// 	// }
// 	// 销售金额改变时触发
// 	sales_amount(frm, cdt, cdn) {
// 		var quarter_end = 0;
// 		quarter_end += frm.doc.quarter_begin;
// 		$.each(frm.doc.quarters, function(i, d) { quarter_end = quarter_end + d.sales_amount - d.amount_collected })
// 		frm.set_value('quarter_end', quarter_end.toFixed(2));
// 		frm.refresh_field('quarter_end');
// 	},

// 	// 收款金额改变时触发
// 	amount_collected(frm, cdt, cdn) {
// 		var quarter_end = 0;
// 		quarter_end += frm.doc.quarter_begin;
// 		$.each(frm.doc.quarters, function(i, d) { quarter_end = quarter_end + d.sales_amount - d.amount_collected })
// 		frm.set_value('quarter_end', quarter_end.toFixed(2));
// 		frm.refresh_field('quarter_end');
// 	},
// });

// frappe.ui.form.on('SRM Reconciliation Items', {
// 	// refresh: function(frm) {

// 	// }
// 	// 数量改变时触发
// 	qty(frm, cdt, cdn) {
// 		const row = locals[cdt][cdn];
// 		row.all_amount = (1 * row.qty) * (1 * row.tax_price);
// 		var total_all_amount = 0;
// 		$.each(frm.doc.items, function(i, d) { if(d.type == 'in-of-warehouse') {total_all_amount += 1 * d.all_amount} else {total_all_amount -= 1 * d.all_amount} });
// 		frm.set_value('total_amount', total_all_amount.toFixed(2));
// 		frm.refresh_field('total_amount');
// 		frm.refresh_field('items');
// 	},

// 	// 单价改变时触发
// 	tax_price(frm, cdt, cdn) {
// 		const row = locals[cdt][cdn];
// 		row.all_amount = (1 * row.qty) * (1 * row.tax_price);
// 		row.reconciliation_price = 1 * row.tax_price;
// 		row.reconciliation_all_amount = (1 * row.qty) * (1 * row.tax_price);
// 		var total_all_amount = 0;
// 		$.each(frm.doc.items, function(i, d) { if(d.type == 'in-of-warehouse') {total_all_amount += 1 * d.all_amount} else {total_all_amount -= 1 * d.all_amount} });
// 		frm.set_value('total_amount', total_all_amount.toFixed(2));
// 		frm.refresh_field('total_amount');
// 		frm.refresh_field('items');
// 	},

// 	// 对账单价改变时触发
// 	reconciliation_price(frm, cdt, cdn) {
// 		const row = locals[cdt][cdn];
// 		row.reconciliation_all_amount = (1 * row.qty) * (1 * row.reconciliation_price);
// 		row.reconciliation_dif = (1 * row.qty) * (1 * row.reconciliation_price) - (1 * row.qty) * (1 * row.tax_price);
// 		var total_reconciliation_dif = 0;
// 		$.each(frm.doc.items, function(i, d) { total_reconciliation_dif += 1 * d.reconciliation_dif });
// 		frm.set_value('total_reconciliation_dif', total_reconciliation_dif.toFixed(2));
// 		// frm.set_value('quarter_end', (1 * frm.doc.quarter_end + total_reconciliation_dif.toFixed(2)));
// 		frm.refresh_field('total_reconciliation_dif');
// 		frm.refresh_field('quarter_end');
// 		frm.refresh_field('items');
// 	},

// 	// 删除分录行时触发
// 	items_remove(frm, cdt, cdn) {
// 		var total_all_amount = 0;
// 		$.each(frm.doc.items, function(i, d) { if(d.type == 'in-of-warehouse') {total_all_amount += 1 * d.all_amount} else {total_all_amount -= 1 * d.all_amount} });
// 		frm.set_value('total_amount', total_all_amount.toFixed(2));
// 		frm.refresh_field('total_amount');
// 		frm.refresh_field('items');
// 	},
// });


// 起始日期检查,不允许重叠, 在py代码中控制
// before_save: function(frm) {
// 	frappe.db.get_list('SRM Reconciliation', {
// 		filters: {
// 			supplier_number: frm.doc.supplier_number,
// 			date_to: ['<=', frm.doc.date_from]
// 		}
// 	}).then(r => {
// 		// console.log(r[0].name);
// 		frappe.throw(__('对账起始日期不能大于历史对账单的对账截止日期!'));
// 	})
// },